Virtual machines are software implementations of a physical device that can run programs analogous to a physical device. Virtual machines can oftentimes communicate with one another, as well as other physical devices, using a switch. Virtual machines provide various benefits, but are not without their problems. One such problem is that situations can arise in which developers desire to implement switches having different functionality. However, designing new switches for each different desired functionality or combination of functionalities can be time consuming and burdensome for the developer.